package com.jrx.anytxn.transaction.dto.loan;

import com.jrx.anytxn.common.constant.RegexConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @Author liuzb
 * @date 2022/07/05
 */
@ApiModel
public class LoanResultCallBackReq implements Serializable {

    /**
     * 放款状态
     */
    @ApiModelProperty("放款状态")
    @NotBlank(message = "放款状态不能为空")
    //S-成功，F-失败
    private String disbursementStatus;

    /**
     * 产品编号
     */
    @ApiModelProperty("产品编号")
    @NotBlank(message = "产品编号不能为空")
    private String productId;

    /**
     * 外部合同号
     */
    @ApiModelProperty("外部合同号")
    @NotBlank(message = "外部合同号不能为空")
    private String contractNumber;

    /**
     * 交易流水号
     */
    @ApiModelProperty("交易流水号")
    private String seqNo;

    /**
     * 借据编号
     */
    @ApiModelProperty("借据编号")
    private String loanId;

    /**
     * 放款流水返回信息
     */
    @ApiModelProperty("放款流水返回信息")
    private String returnMessage;

    /**
     * 放款成功日期
     */
    @ApiModelProperty("放款成功日期")
    private String loanDate;

    /**
     * 请求流水号
     */
    @NotBlank(message = "请求流水号不能为空")
    @ApiModelProperty(value = "请求流水号")
    @Size(max = 32, message = "交易流水号必须小于32位")
    @Pattern(regexp = RegexConstant.ALL_CHARSET_AND_NUMBER, message = "流水号只能是英文字母和数字组成且不可为空")
    protected String reqSeq;

    /**
     * 用户Id
     */
    @NotBlank(message = "用户Id不能为空")
    @ApiModelProperty(value = "用户Id")
    protected String userId;

    /**
     * 租户Id
     */
    @NotBlank(message = "租户Id不能为空")
    @ApiModelProperty(value = "租户Id")
    protected String tenantId;

    /**
     * 渠道号
     */
    @NotBlank(message = "渠道号不能为空")
    @ApiModelProperty(value = "渠道号")
    protected String channelNo;

    /**
     * 获取 放款状态
     *
     * @return disbursementStatus 放款状态
     */
    public String getDisbursementStatus() {
        return this.disbursementStatus;
    }

    /**
     * 设置 放款状态
     *
     * @param disbursementStatus 放款状态
     */
    public void setDisbursementStatus(String disbursementStatus) {
        this.disbursementStatus = disbursementStatus;
    }

    /**
     * 获取 产品编号
     *
     * @return productId 产品编号
     */
    public String getProductId() {
        return this.productId;
    }

    /**
     * 设置 产品编号
     *
     * @param productId 产品编号
     */
    public void setProductId(String productId) {
        this.productId = productId;
    }

    /**
     * 获取 外部合同号
     *
     * @return contractNumber 外部合同号
     */
    public String getContractNumber() {
        return this.contractNumber;
    }

    /**
     * 设置 外部合同号
     *
     * @param contractNumber 外部合同号
     */
    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    /**
     * 获取 交易流水号
     *
     * @return seqNo 交易流水号
     */
    public String getSeqNo() {
        return this.seqNo;
    }

    /**
     * 设置 交易流水号
     *
     * @param seqNo 交易流水号
     */
    public void setSeqNo(String seqNo) {
        this.seqNo = seqNo;
    }

    /**
     * 获取 借据编号
     *
     * @return loanId 借据编号
     */
    public String getLoanId() {
        return this.loanId;
    }

    /**
     * 设置 借据编号
     *
     * @param loanId 借据编号
     */
    public void setLoanId(String loanId) {
        this.loanId = loanId;
    }

    /**
     * 获取 放款流水返回信息
     *
     * @return returnMessage 放款流水返回信息
     */
    public String getReturnMessage() {
        return this.returnMessage;
    }

    /**
     * 设置 放款流水返回信息
     *
     * @param returnMessage 放款流水返回信息
     */
    public void setReturnMessage(String returnMessage) {
        this.returnMessage = returnMessage;
    }

    /**
     * 获取 放款成功日期
     *
     * @return loanDate 放款成功日期
     */
    public String getLoanDate() {
        return this.loanDate;
    }

    /**
     * 设置 放款成功日期
     *
     * @param loanDate 放款成功日期
     */
    public void setLoanDate(String loanDate) {
        this.loanDate = loanDate;
    }

    /**
     * 获取 请求流水号
     *
     * @return reqSeq 请求流水号
     */
    public String getReqSeq() {
        return this.reqSeq;
    }

    /**
     * 设置 请求流水号
     *
     * @param reqSeq 请求流水号
     */
    public void setReqSeq(String reqSeq) {
        this.reqSeq = reqSeq;
    }

    /**
     * 获取 用户Id
     *
     * @return userId 用户Id
     */
    public String getUserId() {
        return this.userId;
    }

    /**
     * 设置 用户Id
     *
     * @param userId 用户Id
     */
    public void setUserId(String userId) {
        this.userId = userId;
    }

    /**
     * 获取 租户Id
     *
     * @return tenantId 租户Id
     */
    public String getTenantId() {
        return this.tenantId;
    }

    /**
     * 设置 租户Id
     *
     * @param tenantId 租户Id
     */
    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    /**
     * 获取 渠道号
     *
     * @return channelNo 渠道号
     */
    public String getChannelNo() {
        return this.channelNo;
    }

    /**
     * 设置 渠道号
     *
     * @param channelNo 渠道号
     */
    public void setChannelNo(String channelNo) {
        this.channelNo = channelNo;
    }

    @Override
    public String toString() {
        return "AnytxnResultCallBackReq{" +
                "disbursementStatus='" + disbursementStatus + '\'' +
                ", productId='" + productId + '\'' +
                ", contractNumber='" + contractNumber + '\'' +
                ", seqNo='" + seqNo + '\'' +
                ", loanId='" + loanId + '\'' +
                ", returnMessage='" + returnMessage + '\'' +
                ", loanDate='" + loanDate + '\'' +
                ", reqSeq='" + reqSeq + '\'' +
                ", userId='" + userId + '\'' +
                ", tenantId='" + tenantId + '\'' +
                ", channelNo='" + channelNo + '\'' +
                '}';
    }
}
